package com.gengzp.mq.server.manager;

import com.gengzp.mq.server.model.message.entity.MqMessage;

/**
 * @ClassName MqBlockWaitingManager
 * @Description 消息阻塞等待管理器
 * @Author gengzp
 * @Date 2025/9/3 14:45
 */
public interface MqBlockWaitingManager {

    /**
     * 阻塞等待消息
     *
     * @param topic   主题
     * @param timeout 超时时间
     * @return 消息对象, 超时返回null
     */
    MqMessage waitForMessage(String topic, long timeout) throws Exception;

    /**
     * 唤醒消息等待者
     *
     * @param mqMessage 消息对象
     */
    void notifyMessageWaiter(MqMessage mqMessage);

}
